package com.tabnet.form;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.tabnet.beans.produit.Produit;
import com.tabnet.dao.DAOException;
import com.tabnet.dao.DAOGammeProduit;

public class DetailProduitForm {

    public static final String PARAM_PRODUIT	= "prod";
    
    private String resultat;
    private Map<String, String> erreurs = new HashMap<String, String>();
    private DAOGammeProduit _oDAOGammeProduit;


    public DetailProduitForm( DAOGammeProduit pDAOGammeProduit ) {
        this._oDAOGammeProduit = pDAOGammeProduit;
    }

    public Map<String, String> getErreurs() {
        return this.erreurs;
    }
    public String getResultat() {
        return this.resultat;
    }

    private void setErreur( String champ, String message ) {
        this.erreurs.put( champ, message );
    }

    /**
     * <p>Fonction recupProduit<br />
     * Récupère un produit du paramètre présent dans l'URL.</p>
     * @param request : objet HttpServletRequest
     * @param pParamGamme : paramètre de l'URL
     * @return une instance Produit
     */
    public Produit recupProduit( HttpServletRequest request, String pParamGamme ) {
    	
        Produit oProduit = new Produit();

        // les tests de validation des données
        this.traiterRefProduit(pParamGamme);
        
        //String refGammeProduit = "GP_0" + pParamProd.substring(4);

        try {
            if ( this.erreurs.isEmpty() ) {
            	oProduit = this._oDAOGammeProduit.trouverGammeProduit(pParamGamme, true).getProduitG();
                this.resultat = "Succès de la récupération produit.";
            }
            else
                this.resultat = "Échec de la récupération du produit.";
        }
        catch ( DAOException e ) {
        	this.setErreur( "imprévu", "Erreur imprévue lors de la selection dans la base de données." );
            this.resultat = "Échec de la récupération du produit.";
        }

        return oProduit;
    }
    
    /**
     * <p>Procédure traiterRefProduit<br />
     * Contrôle la référence d'un produit</p>
     * @param pRef: référence d'un produit
     * */
    private void traiterRefProduit( String pRef ) {
        try {
            this.validationRefProduit( pRef );
        } catch ( Exception e ) {
            this.setErreur( PARAM_PRODUIT, e.getMessage() );
        }
    }
    
    private void validationRefProduit( String pRef ) throws FormValidationException {
        if ( pRef == null || pRef.length() != 10 )
            throw new FormValidationException( "La référence n'est pas correcte." );
    }
 
}
